﻿// B. Chtholly's request.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
/*
https://codeforces.com/problemset/problem/897/B

Chtholly 这几天一直在思考一个问题：

如果一个数是回文数，而且它的十进制表示法中不包含前导零的长度是偶数，我们就称它为 zcy 数。
一个数字是回文数，是指在十进制表示法中，它不包含前导零，正向和反向读数相同。
例如，12321 和 1221 是回文数，而 123 和 12451 不是。此外，1221 是 zcy 数，而 12321 不是。

给定整数 k 和 p，计算 k 个最小 zcy 数的和，并输出这个和的 p 模。

不幸的是，Willem 不擅长解决这类问题，所以他向你求助！

输入
第一行包含两个整数 k 和 p（1 ≤ k ≤ 105，1 ≤ p ≤ 109）。

输出
输出一个整数 - 问题的答案。

Examples
InputCopy
2 100
OutputCopy
33
InputCopy
5 30
OutputCopy
15

注释
在第一个例子中，最小的 zcy 数是 11，第二个最小的 zcy 数是 22。

在第二个例子中，MOD 30 = 15
*/

#include <iostream>
#include <cstring>

using namespace std;

const int N = 100010;
long long a[N];
int k, p;

void init()
{
	for (int i = 1; i < N; i++) {
		long long t = i;
		a[i] = i;
		while (t) {
			a[i] = a[i] * 10 + t % 10;
			t /= 10;
		}
	}
}

int main()
{
	init();

	cin >> k >> p;
	long long sum = 0;
	for (int i = 1; i <= k; i++) {
		sum += a[i] % p;
		sum %= p;
	}
	
	cout << sum << endl;
	
	return 0;
}

 